Termination w.r.t. Q of the following Term Rewriting System could not be shown:
Q restricted rewrite system:
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
↳ QTRS
↳ DependencyPairsProof
Q restricted rewrite system:
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
Using Dependency Pairs [1,15] we result in the following initial DP problem:
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
U721(X1, active(X2), X3) → U721(X1, X2, X3)
U521(mark(X1), X2, X3) → U521(X1, X2, X3)
MARK(U11(X1, X2)) → MARK(X1)
U411(X1, mark(X2)) → U411(X1, X2)
ACTIVE(x(N, 0)) → U611(isNat(N))
ACTIVE(U32(tt)) → MARK(tt)
U111(X1, mark(X2)) → U111(X1, X2)
U311(active(X1), X2) → U311(X1, X2)
ACTIVE(plus(N, s(M))) → ISNAT(M)
U511(X1, X2, active(X3)) → U511(X1, X2, X3)
U121(active(X)) → U121(X)
X(X1, mark(X2)) → X(X1, X2)
ACTIVE(U52(tt, M, N)) → PLUS(N, M)
U521(X1, X2, active(X3)) → U521(X1, X2, X3)
ACTIVE(U72(tt, M, N)) → PLUS(x(N, M), N)
U111(X1, active(X2)) → U111(X1, X2)
ACTIVE(U11(tt, V2)) → U121(isNat(V2))
U311(mark(X1), X2) → U311(X1, X2)
U311(X1, mark(X2)) → U311(X1, X2)
ACTIVE(isNat(x(V1, V2))) → U311(isNat(V1), V2)
ACTIVE(U41(tt, N)) → MARK(N)
MARK(U32(X)) → MARK(X)
X(active(X1), X2) → X(X1, X2)
MARK(x(X1, X2)) → MARK(X2)
MARK(U41(X1, X2)) → MARK(X1)
U321(mark(X)) → U321(X)
ACTIVE(plus(N, s(M))) → U511(isNat(M), M, N)
ACTIVE(isNat(x(V1, V2))) → ISNAT(V1)
U711(X1, X2, active(X3)) → U711(X1, X2, X3)
U521(X1, mark(X2), X3) → U521(X1, X2, X3)
MARK(U72(X1, X2, X3)) → U721(mark(X1), X2, X3)
ACTIVE(U72(tt, M, N)) → X(N, M)
MARK(s(X)) → MARK(X)
ACTIVE(plus(N, 0)) → ISNAT(N)
ACTIVE(U31(tt, V2)) → ISNAT(V2)
PLUS(mark(X1), X2) → PLUS(X1, X2)
U521(X1, active(X2), X3) → U521(X1, X2, X3)
MARK(U41(X1, X2)) → U411(mark(X1), X2)
U511(X1, active(X2), X3) → U511(X1, X2, X3)
MARK(plus(X1, X2)) → MARK(X2)
MARK(U11(X1, X2)) → U111(mark(X1), X2)
X(mark(X1), X2) → X(X1, X2)
ACTIVE(isNat(0)) → MARK(tt)
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
MARK(U71(X1, X2, X3)) → U711(mark(X1), X2, X3)
ACTIVE(isNat(s(V1))) → U211(isNat(V1))
MARK(U31(X1, X2)) → U311(mark(X1), X2)
MARK(s(X)) → ACTIVE(s(mark(X)))
U721(X1, X2, mark(X3)) → U721(X1, X2, X3)
PLUS(X1, mark(X2)) → PLUS(X1, X2)
ACTIVE(U21(tt)) → MARK(tt)
ACTIVE(U31(tt, V2)) → U321(isNat(V2))
PLUS(X1, active(X2)) → PLUS(X1, X2)
MARK(U52(X1, X2, X3)) → U521(mark(X1), X2, X3)
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
U111(active(X1), X2) → U111(X1, X2)
S(mark(X)) → S(X)
MARK(U32(X)) → ACTIVE(U32(mark(X)))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(plus(X1, X2)) → MARK(X1)
ISNAT(mark(X)) → ISNAT(X)
ACTIVE(x(N, s(M))) → U711(isNat(M), M, N)
ACTIVE(isNat(plus(V1, V2))) → ISNAT(V1)
U211(active(X)) → U211(X)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(U11(tt, V2)) → ISNAT(V2)
MARK(U61(X)) → MARK(X)
ACTIVE(isNat(s(V1))) → ISNAT(V1)
U711(mark(X1), X2, X3) → U711(X1, X2, X3)
U521(X1, X2, mark(X3)) → U521(X1, X2, X3)
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
ACTIVE(U12(tt)) → MARK(tt)
U611(mark(X)) → U611(X)
ACTIVE(U61(tt)) → MARK(0)
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
ACTIVE(U51(tt, M, N)) → U521(isNat(N), M, N)
MARK(tt) → ACTIVE(tt)
MARK(U21(X)) → ACTIVE(U21(mark(X)))
U121(mark(X)) → U121(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(U32(X)) → U321(mark(X))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U21(X)) → U211(mark(X))
U411(mark(X1), X2) → U411(X1, X2)
U711(active(X1), X2, X3) → U711(X1, X2, X3)
MARK(x(X1, X2)) → MARK(X1)
U721(X1, X2, active(X3)) → U721(X1, X2, X3)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
U411(active(X1), X2) → U411(X1, X2)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U51(X1, X2, X3)) → MARK(X1)
ACTIVE(plus(N, 0)) → U411(isNat(N), N)
U311(X1, active(X2)) → U311(X1, X2)
U411(X1, active(X2)) → U411(X1, X2)
U721(mark(X1), X2, X3) → U721(X1, X2, X3)
S(active(X)) → S(X)
U321(active(X)) → U321(X)
MARK(x(X1, X2)) → X(mark(X1), mark(X2))
ACTIVE(U51(tt, M, N)) → ISNAT(N)
MARK(U61(X)) → ACTIVE(U61(mark(X)))
U711(X1, X2, mark(X3)) → U711(X1, X2, X3)
U211(mark(X)) → U211(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U12(X)) → ACTIVE(U12(mark(X)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(U51(X1, X2, X3)) → U511(mark(X1), X2, X3)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
U111(mark(X1), X2) → U111(X1, X2)
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
MARK(U12(X)) → MARK(X)
ACTIVE(U71(tt, M, N)) → ISNAT(N)
MARK(U71(X1, X2, X3)) → MARK(X1)
PLUS(active(X1), X2) → PLUS(X1, X2)
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
U511(active(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, X2, mark(X3)) → U511(X1, X2, X3)
MARK(U72(X1, X2, X3)) → MARK(X1)
U711(X1, active(X2), X3) → U711(X1, X2, X3)
ACTIVE(x(N, s(M))) → ISNAT(M)
MARK(U61(X)) → U611(mark(X))
MARK(U52(X1, X2, X3)) → MARK(X1)
U721(active(X1), X2, X3) → U721(X1, X2, X3)
U711(X1, mark(X2), X3) → U711(X1, X2, X3)
MARK(s(X)) → S(mark(X))
MARK(U12(X)) → U121(mark(X))
U511(X1, mark(X2), X3) → U511(X1, X2, X3)
ACTIVE(x(N, 0)) → ISNAT(N)
ACTIVE(U52(tt, M, N)) → S(plus(N, M))
X(X1, active(X2)) → X(X1, X2)
ISNAT(active(X)) → ISNAT(X)
U511(mark(X1), X2, X3) → U511(X1, X2, X3)
MARK(U21(X)) → MARK(X)
ACTIVE(isNat(plus(V1, V2))) → U111(isNat(V1), V2)
U611(active(X)) → U611(X)
U721(X1, mark(X2), X3) → U721(X1, X2, X3)
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U71(tt, M, N)) → U721(isNat(N), M, N)
MARK(0) → ACTIVE(0)
U521(active(X1), X2, X3) → U521(X1, X2, X3)
MARK(plus(X1, X2)) → PLUS(mark(X1), mark(X2))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
U721(X1, active(X2), X3) → U721(X1, X2, X3)
U521(mark(X1), X2, X3) → U521(X1, X2, X3)
MARK(U11(X1, X2)) → MARK(X1)
U411(X1, mark(X2)) → U411(X1, X2)
ACTIVE(x(N, 0)) → U611(isNat(N))
ACTIVE(U32(tt)) → MARK(tt)
U111(X1, mark(X2)) → U111(X1, X2)
U311(active(X1), X2) → U311(X1, X2)
ACTIVE(plus(N, s(M))) → ISNAT(M)
U511(X1, X2, active(X3)) → U511(X1, X2, X3)
U121(active(X)) → U121(X)
X(X1, mark(X2)) → X(X1, X2)
ACTIVE(U52(tt, M, N)) → PLUS(N, M)
U521(X1, X2, active(X3)) → U521(X1, X2, X3)
ACTIVE(U72(tt, M, N)) → PLUS(x(N, M), N)
U111(X1, active(X2)) → U111(X1, X2)
ACTIVE(U11(tt, V2)) → U121(isNat(V2))
U311(mark(X1), X2) → U311(X1, X2)
U311(X1, mark(X2)) → U311(X1, X2)
ACTIVE(isNat(x(V1, V2))) → U311(isNat(V1), V2)
ACTIVE(U41(tt, N)) → MARK(N)
MARK(U32(X)) → MARK(X)
X(active(X1), X2) → X(X1, X2)
MARK(x(X1, X2)) → MARK(X2)
MARK(U41(X1, X2)) → MARK(X1)
U321(mark(X)) → U321(X)
ACTIVE(plus(N, s(M))) → U511(isNat(M), M, N)
ACTIVE(isNat(x(V1, V2))) → ISNAT(V1)
U711(X1, X2, active(X3)) → U711(X1, X2, X3)
U521(X1, mark(X2), X3) → U521(X1, X2, X3)
MARK(U72(X1, X2, X3)) → U721(mark(X1), X2, X3)
ACTIVE(U72(tt, M, N)) → X(N, M)
MARK(s(X)) → MARK(X)
ACTIVE(plus(N, 0)) → ISNAT(N)
ACTIVE(U31(tt, V2)) → ISNAT(V2)
PLUS(mark(X1), X2) → PLUS(X1, X2)
U521(X1, active(X2), X3) → U521(X1, X2, X3)
MARK(U41(X1, X2)) → U411(mark(X1), X2)
U511(X1, active(X2), X3) → U511(X1, X2, X3)
MARK(plus(X1, X2)) → MARK(X2)
MARK(U11(X1, X2)) → U111(mark(X1), X2)
X(mark(X1), X2) → X(X1, X2)
ACTIVE(isNat(0)) → MARK(tt)
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
MARK(U71(X1, X2, X3)) → U711(mark(X1), X2, X3)
ACTIVE(isNat(s(V1))) → U211(isNat(V1))
MARK(U31(X1, X2)) → U311(mark(X1), X2)
MARK(s(X)) → ACTIVE(s(mark(X)))
U721(X1, X2, mark(X3)) → U721(X1, X2, X3)
PLUS(X1, mark(X2)) → PLUS(X1, X2)
ACTIVE(U21(tt)) → MARK(tt)
ACTIVE(U31(tt, V2)) → U321(isNat(V2))
PLUS(X1, active(X2)) → PLUS(X1, X2)
MARK(U52(X1, X2, X3)) → U521(mark(X1), X2, X3)
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
U111(active(X1), X2) → U111(X1, X2)
S(mark(X)) → S(X)
MARK(U32(X)) → ACTIVE(U32(mark(X)))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(plus(X1, X2)) → MARK(X1)
ISNAT(mark(X)) → ISNAT(X)
ACTIVE(x(N, s(M))) → U711(isNat(M), M, N)
ACTIVE(isNat(plus(V1, V2))) → ISNAT(V1)
U211(active(X)) → U211(X)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(U11(tt, V2)) → ISNAT(V2)
MARK(U61(X)) → MARK(X)
ACTIVE(isNat(s(V1))) → ISNAT(V1)
U711(mark(X1), X2, X3) → U711(X1, X2, X3)
U521(X1, X2, mark(X3)) → U521(X1, X2, X3)
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
ACTIVE(U12(tt)) → MARK(tt)
U611(mark(X)) → U611(X)
ACTIVE(U61(tt)) → MARK(0)
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
ACTIVE(U51(tt, M, N)) → U521(isNat(N), M, N)
MARK(tt) → ACTIVE(tt)
MARK(U21(X)) → ACTIVE(U21(mark(X)))
U121(mark(X)) → U121(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(U32(X)) → U321(mark(X))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U21(X)) → U211(mark(X))
U411(mark(X1), X2) → U411(X1, X2)
U711(active(X1), X2, X3) → U711(X1, X2, X3)
MARK(x(X1, X2)) → MARK(X1)
U721(X1, X2, active(X3)) → U721(X1, X2, X3)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
U411(active(X1), X2) → U411(X1, X2)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U51(X1, X2, X3)) → MARK(X1)
ACTIVE(plus(N, 0)) → U411(isNat(N), N)
U311(X1, active(X2)) → U311(X1, X2)
U411(X1, active(X2)) → U411(X1, X2)
U721(mark(X1), X2, X3) → U721(X1, X2, X3)
S(active(X)) → S(X)
U321(active(X)) → U321(X)
MARK(x(X1, X2)) → X(mark(X1), mark(X2))
ACTIVE(U51(tt, M, N)) → ISNAT(N)
MARK(U61(X)) → ACTIVE(U61(mark(X)))
U711(X1, X2, mark(X3)) → U711(X1, X2, X3)
U211(mark(X)) → U211(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U12(X)) → ACTIVE(U12(mark(X)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(U51(X1, X2, X3)) → U511(mark(X1), X2, X3)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
U111(mark(X1), X2) → U111(X1, X2)
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
MARK(U12(X)) → MARK(X)
ACTIVE(U71(tt, M, N)) → ISNAT(N)
MARK(U71(X1, X2, X3)) → MARK(X1)
PLUS(active(X1), X2) → PLUS(X1, X2)
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
U511(active(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, X2, mark(X3)) → U511(X1, X2, X3)
MARK(U72(X1, X2, X3)) → MARK(X1)
U711(X1, active(X2), X3) → U711(X1, X2, X3)
ACTIVE(x(N, s(M))) → ISNAT(M)
MARK(U61(X)) → U611(mark(X))
MARK(U52(X1, X2, X3)) → MARK(X1)
U721(active(X1), X2, X3) → U721(X1, X2, X3)
U711(X1, mark(X2), X3) → U711(X1, X2, X3)
MARK(s(X)) → S(mark(X))
MARK(U12(X)) → U121(mark(X))
U511(X1, mark(X2), X3) → U511(X1, X2, X3)
ACTIVE(x(N, 0)) → ISNAT(N)
ACTIVE(U52(tt, M, N)) → S(plus(N, M))
X(X1, active(X2)) → X(X1, X2)
ISNAT(active(X)) → ISNAT(X)
U511(mark(X1), X2, X3) → U511(X1, X2, X3)
MARK(U21(X)) → MARK(X)
ACTIVE(isNat(plus(V1, V2))) → U111(isNat(V1), V2)
U611(active(X)) → U611(X)
U721(X1, mark(X2), X3) → U721(X1, X2, X3)
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U71(tt, M, N)) → U721(isNat(N), M, N)
MARK(0) → ACTIVE(0)
U521(active(X1), X2, X3) → U521(X1, X2, X3)
MARK(plus(X1, X2)) → PLUS(mark(X1), mark(X2))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
The approximation of the Dependency Graph [15,17,22] contains 16 SCCs with 47 less nodes.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
X(X1, active(X2)) → X(X1, X2)
X(X1, mark(X2)) → X(X1, X2)
X(mark(X1), X2) → X(X1, X2)
X(active(X1), X2) → X(X1, X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
X(X1, active(X2)) → X(X1, X2)
X(X1, mark(X2)) → X(X1, X2)
X(mark(X1), X2) → X(X1, X2)
X(active(X1), X2) → X(X1, X2)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- X(X1, active(X2)) → X(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- X(X1, mark(X2)) → X(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- X(mark(X1), X2) → X(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- X(active(X1), X2) → X(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U721(X1, mark(X2), X3) → U721(X1, X2, X3)
U721(active(X1), X2, X3) → U721(X1, X2, X3)
U721(X1, X2, active(X3)) → U721(X1, X2, X3)
U721(mark(X1), X2, X3) → U721(X1, X2, X3)
U721(X1, active(X2), X3) → U721(X1, X2, X3)
U721(X1, X2, mark(X3)) → U721(X1, X2, X3)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U721(X1, mark(X2), X3) → U721(X1, X2, X3)
U721(active(X1), X2, X3) → U721(X1, X2, X3)
U721(mark(X1), X2, X3) → U721(X1, X2, X3)
U721(X1, X2, active(X3)) → U721(X1, X2, X3)
U721(X1, active(X2), X3) → U721(X1, X2, X3)
U721(X1, X2, mark(X3)) → U721(X1, X2, X3)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- U721(X1, mark(X2), X3) → U721(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U721(active(X1), X2, X3) → U721(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U721(X1, X2, active(X3)) → U721(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
- U721(mark(X1), X2, X3) → U721(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U721(X1, active(X2), X3) → U721(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U721(X1, X2, mark(X3)) → U721(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U711(active(X1), X2, X3) → U711(X1, X2, X3)
U711(mark(X1), X2, X3) → U711(X1, X2, X3)
U711(X1, mark(X2), X3) → U711(X1, X2, X3)
U711(X1, active(X2), X3) → U711(X1, X2, X3)
U711(X1, X2, mark(X3)) → U711(X1, X2, X3)
U711(X1, X2, active(X3)) → U711(X1, X2, X3)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U711(active(X1), X2, X3) → U711(X1, X2, X3)
U711(X1, mark(X2), X3) → U711(X1, X2, X3)
U711(mark(X1), X2, X3) → U711(X1, X2, X3)
U711(X1, active(X2), X3) → U711(X1, X2, X3)
U711(X1, X2, mark(X3)) → U711(X1, X2, X3)
U711(X1, X2, active(X3)) → U711(X1, X2, X3)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- U711(active(X1), X2, X3) → U711(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U711(mark(X1), X2, X3) → U711(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U711(X1, mark(X2), X3) → U711(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U711(X1, active(X2), X3) → U711(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U711(X1, X2, mark(X3)) → U711(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
- U711(X1, X2, active(X3)) → U711(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U611(mark(X)) → U611(X)
U611(active(X)) → U611(X)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U611(mark(X)) → U611(X)
U611(active(X)) → U611(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- U611(mark(X)) → U611(X)
The graph contains the following edges 1 > 1
- U611(active(X)) → U611(X)
The graph contains the following edges 1 > 1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
PLUS(active(X1), X2) → PLUS(X1, X2)
PLUS(mark(X1), X2) → PLUS(X1, X2)
PLUS(X1, mark(X2)) → PLUS(X1, X2)
PLUS(X1, active(X2)) → PLUS(X1, X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
PLUS(active(X1), X2) → PLUS(X1, X2)
PLUS(mark(X1), X2) → PLUS(X1, X2)
PLUS(X1, mark(X2)) → PLUS(X1, X2)
PLUS(X1, active(X2)) → PLUS(X1, X2)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- PLUS(active(X1), X2) → PLUS(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- PLUS(mark(X1), X2) → PLUS(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- PLUS(X1, mark(X2)) → PLUS(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- PLUS(X1, active(X2)) → PLUS(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
S(mark(X)) → S(X)
S(active(X)) → S(X)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
S(active(X)) → S(X)
S(mark(X)) → S(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- S(mark(X)) → S(X)
The graph contains the following edges 1 > 1
- S(active(X)) → S(X)
The graph contains the following edges 1 > 1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U521(X1, X2, mark(X3)) → U521(X1, X2, X3)
U521(X1, mark(X2), X3) → U521(X1, X2, X3)
U521(mark(X1), X2, X3) → U521(X1, X2, X3)
U521(active(X1), X2, X3) → U521(X1, X2, X3)
U521(X1, active(X2), X3) → U521(X1, X2, X3)
U521(X1, X2, active(X3)) → U521(X1, X2, X3)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U521(X1, mark(X2), X3) → U521(X1, X2, X3)
U521(X1, X2, mark(X3)) → U521(X1, X2, X3)
U521(mark(X1), X2, X3) → U521(X1, X2, X3)
U521(active(X1), X2, X3) → U521(X1, X2, X3)
U521(X1, active(X2), X3) → U521(X1, X2, X3)
U521(X1, X2, active(X3)) → U521(X1, X2, X3)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- U521(X1, X2, mark(X3)) → U521(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
- U521(X1, mark(X2), X3) → U521(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U521(mark(X1), X2, X3) → U521(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U521(active(X1), X2, X3) → U521(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U521(X1, active(X2), X3) → U521(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U521(X1, X2, active(X3)) → U521(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U511(X1, X2, mark(X3)) → U511(X1, X2, X3)
U511(X1, mark(X2), X3) → U511(X1, X2, X3)
U511(X1, X2, active(X3)) → U511(X1, X2, X3)
U511(X1, active(X2), X3) → U511(X1, X2, X3)
U511(mark(X1), X2, X3) → U511(X1, X2, X3)
U511(active(X1), X2, X3) → U511(X1, X2, X3)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U511(X1, X2, mark(X3)) → U511(X1, X2, X3)
U511(X1, mark(X2), X3) → U511(X1, X2, X3)
U511(X1, X2, active(X3)) → U511(X1, X2, X3)
U511(mark(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, active(X2), X3) → U511(X1, X2, X3)
U511(active(X1), X2, X3) → U511(X1, X2, X3)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- U511(X1, X2, mark(X3)) → U511(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
- U511(X1, mark(X2), X3) → U511(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U511(X1, X2, active(X3)) → U511(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
- U511(X1, active(X2), X3) → U511(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U511(mark(X1), X2, X3) → U511(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U511(active(X1), X2, X3) → U511(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U411(X1, active(X2)) → U411(X1, X2)
U411(active(X1), X2) → U411(X1, X2)
U411(X1, mark(X2)) → U411(X1, X2)
U411(mark(X1), X2) → U411(X1, X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U411(X1, active(X2)) → U411(X1, X2)
U411(active(X1), X2) → U411(X1, X2)
U411(X1, mark(X2)) → U411(X1, X2)
U411(mark(X1), X2) → U411(X1, X2)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- U411(X1, active(X2)) → U411(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- U411(active(X1), X2) → U411(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- U411(X1, mark(X2)) → U411(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- U411(mark(X1), X2) → U411(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U321(active(X)) → U321(X)
U321(mark(X)) → U321(X)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U321(active(X)) → U321(X)
U321(mark(X)) → U321(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- U321(active(X)) → U321(X)
The graph contains the following edges 1 > 1
- U321(mark(X)) → U321(X)
The graph contains the following edges 1 > 1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U311(X1, active(X2)) → U311(X1, X2)
U311(active(X1), X2) → U311(X1, X2)
U311(mark(X1), X2) → U311(X1, X2)
U311(X1, mark(X2)) → U311(X1, X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U311(X1, active(X2)) → U311(X1, X2)
U311(active(X1), X2) → U311(X1, X2)
U311(mark(X1), X2) → U311(X1, X2)
U311(X1, mark(X2)) → U311(X1, X2)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- U311(X1, active(X2)) → U311(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- U311(active(X1), X2) → U311(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- U311(mark(X1), X2) → U311(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- U311(X1, mark(X2)) → U311(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U211(mark(X)) → U211(X)
U211(active(X)) → U211(X)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U211(mark(X)) → U211(X)
U211(active(X)) → U211(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- U211(mark(X)) → U211(X)
The graph contains the following edges 1 > 1
- U211(active(X)) → U211(X)
The graph contains the following edges 1 > 1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
ISNAT(active(X)) → ISNAT(X)
ISNAT(mark(X)) → ISNAT(X)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
ISNAT(active(X)) → ISNAT(X)
ISNAT(mark(X)) → ISNAT(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- ISNAT(active(X)) → ISNAT(X)
The graph contains the following edges 1 > 1
- ISNAT(mark(X)) → ISNAT(X)
The graph contains the following edges 1 > 1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U121(mark(X)) → U121(X)
U121(active(X)) → U121(X)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U121(mark(X)) → U121(X)
U121(active(X)) → U121(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- U121(mark(X)) → U121(X)
The graph contains the following edges 1 > 1
- U121(active(X)) → U121(X)
The graph contains the following edges 1 > 1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U111(X1, mark(X2)) → U111(X1, X2)
U111(X1, active(X2)) → U111(X1, X2)
U111(active(X1), X2) → U111(X1, X2)
U111(mark(X1), X2) → U111(X1, X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We can use the usable rules and reduction pair processor [15] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its argument. Then, we can delete all non-usable rules [17] from R.
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
U111(X1, mark(X2)) → U111(X1, X2)
U111(active(X1), X2) → U111(X1, X2)
U111(X1, active(X2)) → U111(X1, X2)
U111(mark(X1), X2) → U111(X1, X2)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- U111(X1, mark(X2)) → U111(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- U111(X1, active(X2)) → U111(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- U111(active(X1), X2) → U111(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- U111(mark(X1), X2) → U111(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U12(X)) → MARK(X)
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U21(X)) → ACTIVE(U21(mark(X)))
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(X1, X2)) → MARK(X1)
MARK(s(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(plus(X1, X2)) → MARK(X2)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
MARK(x(X1, X2)) → MARK(X1)
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
MARK(s(X)) → ACTIVE(s(mark(X)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → MARK(X1)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
MARK(U32(X)) → ACTIVE(U32(mark(X)))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(U61(X)) → ACTIVE(U61(mark(X)))
MARK(plus(X1, X2)) → MARK(X1)
ACTIVE(U41(tt, N)) → MARK(N)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U61(X)) → MARK(X)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U12(X)) → ACTIVE(U12(mark(X)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(x(X1, X2)) → MARK(X2)
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U41(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U21(X)) → ACTIVE(U21(mark(X)))
MARK(s(X)) → ACTIVE(s(mark(X)))
MARK(U32(X)) → ACTIVE(U32(mark(X)))
MARK(U61(X)) → ACTIVE(U61(mark(X)))
MARK(U12(X)) → ACTIVE(U12(mark(X)))
The remaining pairs can at least be oriented weakly.
MARK(U12(X)) → MARK(X)
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(X1, X2)) → MARK(X1)
MARK(s(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(plus(X1, X2)) → MARK(X2)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
MARK(x(X1, X2)) → MARK(X1)
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → MARK(X1)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(plus(X1, X2)) → MARK(X1)
ACTIVE(U41(tt, N)) → MARK(N)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U61(X)) → MARK(X)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(x(X1, X2)) → MARK(X2)
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U41(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
Used ordering: Polynomial interpretation with max and min functions [25]:
POL(0) = 0
POL(ACTIVE(x1)) = x1
POL(MARK(x1)) = 1
POL(U11(x1, x2)) = 1
POL(U12(x1)) = 0
POL(U21(x1)) = 0
POL(U31(x1, x2)) = 1
POL(U32(x1)) = 0
POL(U41(x1, x2)) = 1
POL(U51(x1, x2, x3)) = 1
POL(U52(x1, x2, x3)) = 1
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 1
POL(U72(x1, x2, x3)) = 1
POL(active(x1)) = 0
POL(isNat(x1)) = 1
POL(mark(x1)) = 0
POL(plus(x1, x2)) = 1
POL(s(x1)) = 0
POL(tt) = 0
POL(x(x1, x2)) = 1
The following usable rules [17] were oriented:
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U61(active(X)) → U61(X)
U61(mark(X)) → U61(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
x(X1, active(X2)) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U12(X)) → MARK(X)
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(s(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(plus(X1, X2)) → MARK(X2)
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
MARK(x(X1, X2)) → MARK(X1)
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → MARK(X1)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(plus(X1, X2)) → MARK(X1)
ACTIVE(U41(tt, N)) → MARK(N)
MARK(U32(X)) → MARK(X)
MARK(U21(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
MARK(U61(X)) → MARK(X)
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
MARK(x(X1, X2)) → MARK(X2)
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U41(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(s(X)) → MARK(X)
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(plus(X1, X2)) → MARK(X2)
MARK(x(X1, X2)) → MARK(X1)
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → MARK(X1)
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(plus(X1, X2)) → MARK(X1)
ACTIVE(U41(tt, N)) → MARK(N)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
MARK(U61(X)) → MARK(X)
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
MARK(x(X1, X2)) → MARK(X2)
MARK(U41(X1, X2)) → MARK(X1)
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
The remaining pairs can at least be oriented weakly.
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U12(X)) → MARK(X)
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
MARK(U32(X)) → MARK(X)
MARK(U21(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
Used ordering: Combined order from the following AFS and order.
ACTIVE(x1) = ACTIVE(x1)
isNat(x1) = isNat
plus(x1, x2) = plus(x1, x2)
MARK(x1) = MARK(x1)
U11(x1, x2) = x1
U71(x1, x2, x3) = U71(x1, x2, x3)
tt = tt
U72(x1, x2, x3) = U72(x1, x2, x3)
U12(x1) = x1
x(x1, x2) = x(x1, x2)
mark(x1) = x1
s(x1) = s(x1)
U41(x1, x2) = U41(x1, x2)
U31(x1, x2) = x1
0 = 0
U61(x1) = U61(x1)
U51(x1, x2, x3) = U51(x1, x2, x3)
U52(x1, x2, x3) = U52(x1, x2, x3)
U32(x1) = x1
U21(x1) = x1
active(x1) = x1
Recursive path order with status [2].
Quasi-Precedence:
[U713, U723, x2] > U611 > [isNat, plus2, tt, U412, 0, U513, U523] > [ACTIVE1, MARK1, s1]
Status: plus2: [2,1]
U611: [1]
x2: [1,2]
0: multiset
ACTIVE1: [1]
isNat: []
U523: [2,3,1]
MARK1: [1]
tt: multiset
U412: [1,2]
s1: multiset
U723: [3,2,1]
U513: [2,3,1]
U713: [3,2,1]
The following usable rules [17] were oriented:
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U41(tt, N)) → mark(N)
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
mark(U32(X)) → active(U32(mark(X)))
mark(U61(X)) → active(U61(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
active(U31(tt, V2)) → mark(U32(isNat(V2)))
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U12(X)) → active(U12(mark(X)))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(U21(X)) → active(U21(mark(X)))
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(x(N, 0)) → mark(U61(isNat(N)))
mark(s(X)) → active(s(mark(X)))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(tt) → active(tt)
active(isNat(0)) → mark(tt)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U61(active(X)) → U61(X)
U61(mark(X)) → U61(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
mark(0) → active(0)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
x(X1, active(X2)) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
active(U32(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
active(U61(tt)) → mark(0)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
active(U12(tt)) → mark(tt)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
The remaining pairs can at least be oriented weakly.
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
Used ordering: Polynomial interpretation with max and min functions [25]:
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(MARK(x1)) = x1
POL(U11(x1, x2)) = x1
POL(U12(x1)) = x1
POL(U21(x1)) = x1
POL(U31(x1, x2)) = x1
POL(U32(x1)) = x1
POL(U41(x1, x2)) = x1
POL(U51(x1, x2, x3)) = 0
POL(U52(x1, x2, x3)) = 0
POL(U61(x1)) = x1
POL(U71(x1, x2, x3)) = 1
POL(U72(x1, x2, x3)) = 0
POL(active(x1)) = x1
POL(isNat(x1)) = 0
POL(mark(x1)) = x1
POL(plus(x1, x2)) = 0
POL(s(x1)) = 0
POL(tt) = 0
POL(x(x1, x2)) = 0
The following usable rules [17] were oriented:
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
The remaining pairs can at least be oriented weakly.
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
Used ordering: Polynomial interpretation [25]:
POL(0) = 0
POL(ACTIVE(x1)) = x1
POL(MARK(x1)) = 0
POL(U11(x1, x2)) = 0
POL(U12(x1)) = 0
POL(U21(x1)) = 0
POL(U31(x1, x2)) = 0
POL(U32(x1)) = 0
POL(U41(x1, x2)) = 0
POL(U51(x1, x2, x3)) = 0
POL(U52(x1, x2, x3)) = 0
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 1 + x1 + x3
POL(U72(x1, x2, x3)) = 0
POL(active(x1)) = 0
POL(isNat(x1)) = 0
POL(mark(x1)) = 0
POL(plus(x1, x2)) = 0
POL(s(x1)) = 0
POL(tt) = 1
POL(x(x1, x2)) = 0
The following usable rules [17] were oriented:
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
x(X1, active(X2)) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
The remaining pairs can at least be oriented weakly.
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
Used ordering: Polynomial interpretation [25]:
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(MARK(x1)) = x1
POL(U11(x1, x2)) = x1
POL(U12(x1)) = x1
POL(U21(x1)) = x1
POL(U31(x1, x2)) = x1
POL(U32(x1)) = x1
POL(U41(x1, x2)) = x1
POL(U51(x1, x2, x3)) = x3
POL(U52(x1, x2, x3)) = 0
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 0
POL(U72(x1, x2, x3)) = x1 + x2 + x3
POL(active(x1)) = x1
POL(isNat(x1)) = 0
POL(mark(x1)) = x1
POL(plus(x1, x2)) = 0
POL(s(x1)) = x1
POL(tt) = 0
POL(x(x1, x2)) = 1 + x1 + x2
The following usable rules [17] were oriented:
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
The remaining pairs can at least be oriented weakly.
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
Used ordering: Polynomial interpretation with max and min functions [25]:
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(MARK(x1)) = x1
POL(U11(x1, x2)) = x1
POL(U12(x1)) = x1
POL(U21(x1)) = x1
POL(U31(x1, x2)) = x1
POL(U32(x1)) = x1
POL(U41(x1, x2)) = 0
POL(U51(x1, x2, x3)) = x2 + x3
POL(U52(x1, x2, x3)) = 0
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 0
POL(U72(x1, x2, x3)) = x1 + x2 + x3
POL(active(x1)) = x1
POL(isNat(x1)) = 0
POL(mark(x1)) = x1
POL(plus(x1, x2)) = 1
POL(s(x1)) = 0
POL(tt) = 0
POL(x(x1, x2)) = 0
The following usable rules [17] were oriented:
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
The remaining pairs can at least be oriented weakly.
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
Used ordering: Polynomial interpretation [25]:
POL(0) = 1
POL(ACTIVE(x1)) = x1
POL(MARK(x1)) = 0
POL(U11(x1, x2)) = 0
POL(U12(x1)) = 0
POL(U21(x1)) = 0
POL(U31(x1, x2)) = 0
POL(U32(x1)) = 0
POL(U41(x1, x2)) = 0
POL(U51(x1, x2, x3)) = 0
POL(U52(x1, x2, x3)) = 0
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 0
POL(U72(x1, x2, x3)) = 0
POL(active(x1)) = 0
POL(isNat(x1)) = 0
POL(mark(x1)) = 0
POL(plus(x1, x2)) = 1 + x1 + x2
POL(s(x1)) = 0
POL(tt) = 0
POL(x(x1, x2)) = 0
The following usable rules [17] were oriented:
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
The remaining pairs can at least be oriented weakly.
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
Used ordering: Polynomial interpretation [25]:
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(MARK(x1)) = x1
POL(U11(x1, x2)) = x1
POL(U12(x1)) = x1
POL(U21(x1)) = x1
POL(U31(x1, x2)) = x1
POL(U32(x1)) = x1
POL(U41(x1, x2)) = 1
POL(U51(x1, x2, x3)) = x2 + x3
POL(U52(x1, x2, x3)) = 0
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 0
POL(U72(x1, x2, x3)) = 1 + x1 + x2 + x3
POL(active(x1)) = x1
POL(isNat(x1)) = 0
POL(mark(x1)) = x1
POL(plus(x1, x2)) = 0
POL(s(x1)) = 0
POL(tt) = 0
POL(x(x1, x2)) = 0
The following usable rules [17] were oriented:
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
The remaining pairs can at least be oriented weakly.
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
Used ordering: Polynomial interpretation with max and min functions [25]:
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(MARK(x1)) = x1
POL(U11(x1, x2)) = x1
POL(U12(x1)) = x1
POL(U21(x1)) = x1
POL(U31(x1, x2)) = x1
POL(U32(x1)) = x1
POL(U41(x1, x2)) = 0
POL(U51(x1, x2, x3)) = 1 + x3
POL(U52(x1, x2, x3)) = 0
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 0
POL(U72(x1, x2, x3)) = 0
POL(active(x1)) = x1
POL(isNat(x1)) = 0
POL(mark(x1)) = x1
POL(plus(x1, x2)) = 0
POL(s(x1)) = 0
POL(tt) = 0
POL(x(x1, x2)) = x1
The following usable rules [17] were oriented:
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
The remaining pairs can at least be oriented weakly.
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
Used ordering: Polynomial interpretation [25]:
POL(0) = 0
POL(ACTIVE(x1)) = x1
POL(MARK(x1)) = 0
POL(U11(x1, x2)) = 0
POL(U12(x1)) = 0
POL(U21(x1)) = 0
POL(U31(x1, x2)) = 0
POL(U32(x1)) = 0
POL(U41(x1, x2)) = 0
POL(U51(x1, x2, x3)) = 1 + x1 + x2
POL(U52(x1, x2, x3)) = 0
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 0
POL(U72(x1, x2, x3)) = 0
POL(active(x1)) = 0
POL(isNat(x1)) = 0
POL(mark(x1)) = 0
POL(plus(x1, x2)) = 0
POL(s(x1)) = 0
POL(tt) = 1
POL(x(x1, x2)) = 0
The following usable rules [17] were oriented:
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
The remaining pairs can at least be oriented weakly.
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
Used ordering: Polynomial interpretation [25]:
POL(0) = 0
POL(ACTIVE(x1)) = x1
POL(MARK(x1)) = 1
POL(U11(x1, x2)) = 1
POL(U12(x1)) = 0
POL(U21(x1)) = 0
POL(U31(x1, x2)) = 1
POL(U32(x1)) = 0
POL(U41(x1, x2)) = 0
POL(U51(x1, x2, x3)) = 0
POL(U52(x1, x2, x3)) = 0
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 0
POL(U72(x1, x2, x3)) = 0
POL(active(x1)) = 0
POL(isNat(x1)) = 1
POL(mark(x1)) = 0
POL(plus(x1, x2)) = 0
POL(s(x1)) = 0
POL(tt) = 0
POL(x(x1, x2)) = 0
The following usable rules [17] were oriented:
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By narrowing [15] the rule MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2)) at position [0] we obtained the following new rules:
MARK(U11(U12(x0), y1)) → ACTIVE(U11(active(U12(mark(x0))), y1))
MARK(U11(x(x0, x1), y1)) → ACTIVE(U11(active(x(mark(x0), mark(x1))), y1))
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(U52(x0, x1, x2), y1)) → ACTIVE(U11(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(U11(0, y1)) → ACTIVE(U11(active(0), y1))
MARK(U11(s(x0), y1)) → ACTIVE(U11(active(s(mark(x0))), y1))
MARK(U11(U21(x0), y1)) → ACTIVE(U11(active(U21(mark(x0))), y1))
MARK(U11(U51(x0, x1, x2), y1)) → ACTIVE(U11(active(U51(mark(x0), x1, x2)), y1))
MARK(U11(plus(x0, x1), y1)) → ACTIVE(U11(active(plus(mark(x0), mark(x1))), y1))
MARK(U11(U71(x0, x1, x2), y1)) → ACTIVE(U11(active(U71(mark(x0), x1, x2)), y1))
MARK(U11(U61(x0), y1)) → ACTIVE(U11(active(U61(mark(x0))), y1))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(U72(x0, x1, x2), y1)) → ACTIVE(U11(active(U72(mark(x0), x1, x2)), y1))
MARK(U11(tt, y1)) → ACTIVE(U11(active(tt), y1))
MARK(U11(U41(x0, x1), y1)) → ACTIVE(U11(active(U41(mark(x0), x1)), y1))
MARK(U11(U32(x0), y1)) → ACTIVE(U11(active(U32(mark(x0))), y1))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
MARK(U11(U31(x0, x1), y1)) → ACTIVE(U11(active(U31(mark(x0), x1)), y1))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(U12(x0), y1)) → ACTIVE(U11(active(U12(mark(x0))), y1))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U12(X)) → MARK(X)
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(U52(x0, x1, x2), y1)) → ACTIVE(U11(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(U11(U21(x0), y1)) → ACTIVE(U11(active(U21(mark(x0))), y1))
MARK(U11(U51(x0, x1, x2), y1)) → ACTIVE(U11(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U11(U41(x0, x1), y1)) → ACTIVE(U11(active(U41(mark(x0), x1)), y1))
MARK(U11(x(x0, x1), y1)) → ACTIVE(U11(active(x(mark(x0), mark(x1))), y1))
MARK(U11(0, y1)) → ACTIVE(U11(active(0), y1))
MARK(U11(s(x0), y1)) → ACTIVE(U11(active(s(mark(x0))), y1))
MARK(U11(plus(x0, x1), y1)) → ACTIVE(U11(active(plus(mark(x0), mark(x1))), y1))
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
MARK(U11(U71(x0, x1, x2), y1)) → ACTIVE(U11(active(U71(mark(x0), x1, x2)), y1))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U11(U61(x0), y1)) → ACTIVE(U11(active(U61(mark(x0))), y1))
MARK(U11(U72(x0, x1, x2), y1)) → ACTIVE(U11(active(U72(mark(x0), x1, x2)), y1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U11(tt, y1)) → ACTIVE(U11(active(tt), y1))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(U32(x0), y1)) → ACTIVE(U11(active(U32(mark(x0))), y1))
MARK(U11(U31(x0, x1), y1)) → ACTIVE(U11(active(U31(mark(x0), x1)), y1))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By narrowing [15] the rule MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2)) at position [0] we obtained the following new rules:
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U31(U51(x0, x1, x2), y1)) → ACTIVE(U31(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(U72(x0, x1, x2), y1)) → ACTIVE(U31(active(U72(mark(x0), x1, x2)), y1))
MARK(U31(U31(x0, x1), y1)) → ACTIVE(U31(active(U31(mark(x0), x1)), y1))
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U31(x(x0, x1), y1)) → ACTIVE(U31(active(x(mark(x0), mark(x1))), y1))
MARK(U31(0, y1)) → ACTIVE(U31(active(0), y1))
MARK(U31(s(x0), y1)) → ACTIVE(U31(active(s(mark(x0))), y1))
MARK(U31(U12(x0), y1)) → ACTIVE(U31(active(U12(mark(x0))), y1))
MARK(U31(U21(x0), y1)) → ACTIVE(U31(active(U21(mark(x0))), y1))
MARK(U31(U71(x0, x1, x2), y1)) → ACTIVE(U31(active(U71(mark(x0), x1, x2)), y1))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(tt, y1)) → ACTIVE(U31(active(tt), y1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(U32(x0), y1)) → ACTIVE(U31(active(U32(mark(x0))), y1))
MARK(U31(plus(x0, x1), y1)) → ACTIVE(U31(active(plus(mark(x0), mark(x1))), y1))
MARK(U31(U61(x0), y1)) → ACTIVE(U31(active(U61(mark(x0))), y1))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(U41(x0, x1), y1)) → ACTIVE(U31(active(U41(mark(x0), x1)), y1))
MARK(U31(U52(x0, x1, x2), y1)) → ACTIVE(U31(active(U52(mark(x0), x1, x2)), y1))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(U52(x0, x1, x2), y1)) → ACTIVE(U11(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(U11(U21(x0), y1)) → ACTIVE(U11(active(U21(mark(x0))), y1))
MARK(U31(U52(x0, x1, x2), y1)) → ACTIVE(U31(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(x(x0, x1), y1)) → ACTIVE(U11(active(x(mark(x0), mark(x1))), y1))
MARK(U31(U51(x0, x1, x2), y1)) → ACTIVE(U31(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U32(X)) → MARK(X)
MARK(U11(U71(x0, x1, x2), y1)) → ACTIVE(U11(active(U71(mark(x0), x1, x2)), y1))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(U61(x0), y1)) → ACTIVE(U11(active(U61(mark(x0))), y1))
MARK(U31(U71(x0, x1, x2), y1)) → ACTIVE(U31(active(U71(mark(x0), x1, x2)), y1))
MARK(U11(U72(x0, x1, x2), y1)) → ACTIVE(U11(active(U72(mark(x0), x1, x2)), y1))
MARK(U31(U61(x0), y1)) → ACTIVE(U31(active(U61(mark(x0))), y1))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(U32(x0), y1)) → ACTIVE(U11(active(U32(mark(x0))), y1))
MARK(U11(U31(x0, x1), y1)) → ACTIVE(U11(active(U31(mark(x0), x1)), y1))
MARK(U11(U12(x0), y1)) → ACTIVE(U11(active(U12(mark(x0))), y1))
MARK(U12(X)) → MARK(X)
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U11(U51(x0, x1, x2), y1)) → ACTIVE(U11(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(0, y1)) → ACTIVE(U31(active(0), y1))
MARK(U31(U21(x0), y1)) → ACTIVE(U31(active(U21(mark(x0))), y1))
MARK(U31(tt, y1)) → ACTIVE(U31(active(tt), y1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(plus(x0, x1), y1)) → ACTIVE(U31(active(plus(mark(x0), mark(x1))), y1))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U11(U41(x0, x1), y1)) → ACTIVE(U11(active(U41(mark(x0), x1)), y1))
MARK(U11(0, y1)) → ACTIVE(U11(active(0), y1))
MARK(U31(U72(x0, x1, x2), y1)) → ACTIVE(U31(active(U72(mark(x0), x1, x2)), y1))
MARK(U11(s(x0), y1)) → ACTIVE(U11(active(s(mark(x0))), y1))
MARK(U31(U31(x0, x1), y1)) → ACTIVE(U31(active(U31(mark(x0), x1)), y1))
MARK(U11(plus(x0, x1), y1)) → ACTIVE(U11(active(plus(mark(x0), mark(x1))), y1))
MARK(U31(x(x0, x1), y1)) → ACTIVE(U31(active(x(mark(x0), mark(x1))), y1))
MARK(U21(X)) → MARK(X)
MARK(U31(s(x0), y1)) → ACTIVE(U31(active(s(mark(x0))), y1))
MARK(U31(U12(x0), y1)) → ACTIVE(U31(active(U12(mark(x0))), y1))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(U32(x0), y1)) → ACTIVE(U31(active(U32(mark(x0))), y1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U31(U41(x0, x1), y1)) → ACTIVE(U31(active(U41(mark(x0), x1)), y1))
MARK(U11(tt, y1)) → ACTIVE(U11(active(tt), y1))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U31(plus(x0, x1), y1)) → ACTIVE(U31(active(plus(mark(x0), mark(x1))), y1))
MARK(U11(plus(x0, x1), y1)) → ACTIVE(U11(active(plus(mark(x0), mark(x1))), y1))
The remaining pairs can at least be oriented weakly.
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(U52(x0, x1, x2), y1)) → ACTIVE(U11(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(U11(U21(x0), y1)) → ACTIVE(U11(active(U21(mark(x0))), y1))
MARK(U31(U52(x0, x1, x2), y1)) → ACTIVE(U31(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(x(x0, x1), y1)) → ACTIVE(U11(active(x(mark(x0), mark(x1))), y1))
MARK(U31(U51(x0, x1, x2), y1)) → ACTIVE(U31(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U32(X)) → MARK(X)
MARK(U11(U71(x0, x1, x2), y1)) → ACTIVE(U11(active(U71(mark(x0), x1, x2)), y1))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(U61(x0), y1)) → ACTIVE(U11(active(U61(mark(x0))), y1))
MARK(U31(U71(x0, x1, x2), y1)) → ACTIVE(U31(active(U71(mark(x0), x1, x2)), y1))
MARK(U11(U72(x0, x1, x2), y1)) → ACTIVE(U11(active(U72(mark(x0), x1, x2)), y1))
MARK(U31(U61(x0), y1)) → ACTIVE(U31(active(U61(mark(x0))), y1))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(U32(x0), y1)) → ACTIVE(U11(active(U32(mark(x0))), y1))
MARK(U11(U31(x0, x1), y1)) → ACTIVE(U11(active(U31(mark(x0), x1)), y1))
MARK(U11(U12(x0), y1)) → ACTIVE(U11(active(U12(mark(x0))), y1))
MARK(U12(X)) → MARK(X)
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U11(U51(x0, x1, x2), y1)) → ACTIVE(U11(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(0, y1)) → ACTIVE(U31(active(0), y1))
MARK(U31(U21(x0), y1)) → ACTIVE(U31(active(U21(mark(x0))), y1))
MARK(U31(tt, y1)) → ACTIVE(U31(active(tt), y1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U11(U41(x0, x1), y1)) → ACTIVE(U11(active(U41(mark(x0), x1)), y1))
MARK(U11(0, y1)) → ACTIVE(U11(active(0), y1))
MARK(U31(U72(x0, x1, x2), y1)) → ACTIVE(U31(active(U72(mark(x0), x1, x2)), y1))
MARK(U11(s(x0), y1)) → ACTIVE(U11(active(s(mark(x0))), y1))
MARK(U31(U31(x0, x1), y1)) → ACTIVE(U31(active(U31(mark(x0), x1)), y1))
MARK(U31(x(x0, x1), y1)) → ACTIVE(U31(active(x(mark(x0), mark(x1))), y1))
MARK(U21(X)) → MARK(X)
MARK(U31(s(x0), y1)) → ACTIVE(U31(active(s(mark(x0))), y1))
MARK(U31(U12(x0), y1)) → ACTIVE(U31(active(U12(mark(x0))), y1))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(U32(x0), y1)) → ACTIVE(U31(active(U32(mark(x0))), y1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U31(U41(x0, x1), y1)) → ACTIVE(U31(active(U41(mark(x0), x1)), y1))
MARK(U11(tt, y1)) → ACTIVE(U11(active(tt), y1))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
Used ordering: Polynomial interpretation with max and min functions [25]:
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(MARK(x1)) = x1
POL(U11(x1, x2)) = x1
POL(U12(x1)) = x1
POL(U21(x1)) = x1
POL(U31(x1, x2)) = x1
POL(U32(x1)) = x1
POL(U41(x1, x2)) = 0
POL(U51(x1, x2, x3)) = 0
POL(U52(x1, x2, x3)) = x3
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = x2
POL(U72(x1, x2, x3)) = x2
POL(active(x1)) = x1
POL(isNat(x1)) = 0
POL(mark(x1)) = x1
POL(plus(x1, x2)) = 1 + x1 + x2
POL(s(x1)) = x1
POL(tt) = 0
POL(x(x1, x2)) = x1 + x2
The following usable rules [17] were oriented:
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(U52(x0, x1, x2), y1)) → ACTIVE(U11(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(U11(U21(x0), y1)) → ACTIVE(U11(active(U21(mark(x0))), y1))
MARK(U31(U52(x0, x1, x2), y1)) → ACTIVE(U31(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(x(x0, x1), y1)) → ACTIVE(U11(active(x(mark(x0), mark(x1))), y1))
MARK(U31(U51(x0, x1, x2), y1)) → ACTIVE(U31(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U32(X)) → MARK(X)
MARK(U11(U71(x0, x1, x2), y1)) → ACTIVE(U11(active(U71(mark(x0), x1, x2)), y1))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(U61(x0), y1)) → ACTIVE(U11(active(U61(mark(x0))), y1))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U31(U71(x0, x1, x2), y1)) → ACTIVE(U31(active(U71(mark(x0), x1, x2)), y1))
MARK(U11(U72(x0, x1, x2), y1)) → ACTIVE(U11(active(U72(mark(x0), x1, x2)), y1))
MARK(U31(U61(x0), y1)) → ACTIVE(U31(active(U61(mark(x0))), y1))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(U32(x0), y1)) → ACTIVE(U11(active(U32(mark(x0))), y1))
MARK(U11(U31(x0, x1), y1)) → ACTIVE(U11(active(U31(mark(x0), x1)), y1))
MARK(U11(U12(x0), y1)) → ACTIVE(U11(active(U12(mark(x0))), y1))
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U12(X)) → MARK(X)
MARK(U11(U51(x0, x1, x2), y1)) → ACTIVE(U11(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(0, y1)) → ACTIVE(U31(active(0), y1))
MARK(U31(U21(x0), y1)) → ACTIVE(U31(active(U21(mark(x0))), y1))
MARK(U31(tt, y1)) → ACTIVE(U31(active(tt), y1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U11(U41(x0, x1), y1)) → ACTIVE(U11(active(U41(mark(x0), x1)), y1))
MARK(U11(0, y1)) → ACTIVE(U11(active(0), y1))
MARK(U31(U72(x0, x1, x2), y1)) → ACTIVE(U31(active(U72(mark(x0), x1, x2)), y1))
MARK(U11(s(x0), y1)) → ACTIVE(U11(active(s(mark(x0))), y1))
MARK(U31(U31(x0, x1), y1)) → ACTIVE(U31(active(U31(mark(x0), x1)), y1))
MARK(U31(x(x0, x1), y1)) → ACTIVE(U31(active(x(mark(x0), mark(x1))), y1))
MARK(U21(X)) → MARK(X)
MARK(U31(s(x0), y1)) → ACTIVE(U31(active(s(mark(x0))), y1))
MARK(U31(U12(x0), y1)) → ACTIVE(U31(active(U12(mark(x0))), y1))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(U32(x0), y1)) → ACTIVE(U31(active(U32(mark(x0))), y1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U31(U41(x0, x1), y1)) → ACTIVE(U31(active(U41(mark(x0), x1)), y1))
MARK(U11(tt, y1)) → ACTIVE(U11(active(tt), y1))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U31(0, y1)) → ACTIVE(U31(active(0), y1))
MARK(U11(0, y1)) → ACTIVE(U11(active(0), y1))
The remaining pairs can at least be oriented weakly.
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(U52(x0, x1, x2), y1)) → ACTIVE(U11(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(U11(U21(x0), y1)) → ACTIVE(U11(active(U21(mark(x0))), y1))
MARK(U31(U52(x0, x1, x2), y1)) → ACTIVE(U31(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(x(x0, x1), y1)) → ACTIVE(U11(active(x(mark(x0), mark(x1))), y1))
MARK(U31(U51(x0, x1, x2), y1)) → ACTIVE(U31(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U32(X)) → MARK(X)
MARK(U11(U71(x0, x1, x2), y1)) → ACTIVE(U11(active(U71(mark(x0), x1, x2)), y1))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(U61(x0), y1)) → ACTIVE(U11(active(U61(mark(x0))), y1))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U31(U71(x0, x1, x2), y1)) → ACTIVE(U31(active(U71(mark(x0), x1, x2)), y1))
MARK(U11(U72(x0, x1, x2), y1)) → ACTIVE(U11(active(U72(mark(x0), x1, x2)), y1))
MARK(U31(U61(x0), y1)) → ACTIVE(U31(active(U61(mark(x0))), y1))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(U32(x0), y1)) → ACTIVE(U11(active(U32(mark(x0))), y1))
MARK(U11(U31(x0, x1), y1)) → ACTIVE(U11(active(U31(mark(x0), x1)), y1))
MARK(U11(U12(x0), y1)) → ACTIVE(U11(active(U12(mark(x0))), y1))
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U12(X)) → MARK(X)
MARK(U11(U51(x0, x1, x2), y1)) → ACTIVE(U11(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(U21(x0), y1)) → ACTIVE(U31(active(U21(mark(x0))), y1))
MARK(U31(tt, y1)) → ACTIVE(U31(active(tt), y1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U11(U41(x0, x1), y1)) → ACTIVE(U11(active(U41(mark(x0), x1)), y1))
MARK(U31(U72(x0, x1, x2), y1)) → ACTIVE(U31(active(U72(mark(x0), x1, x2)), y1))
MARK(U11(s(x0), y1)) → ACTIVE(U11(active(s(mark(x0))), y1))
MARK(U31(U31(x0, x1), y1)) → ACTIVE(U31(active(U31(mark(x0), x1)), y1))
MARK(U31(x(x0, x1), y1)) → ACTIVE(U31(active(x(mark(x0), mark(x1))), y1))
MARK(U21(X)) → MARK(X)
MARK(U31(s(x0), y1)) → ACTIVE(U31(active(s(mark(x0))), y1))
MARK(U31(U12(x0), y1)) → ACTIVE(U31(active(U12(mark(x0))), y1))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(U32(x0), y1)) → ACTIVE(U31(active(U32(mark(x0))), y1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U31(U41(x0, x1), y1)) → ACTIVE(U31(active(U41(mark(x0), x1)), y1))
MARK(U11(tt, y1)) → ACTIVE(U11(active(tt), y1))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
Used ordering: Polynomial interpretation with max and min functions [25]:
POL(0) = 1
POL(ACTIVE(x1)) = 0
POL(MARK(x1)) = x1
POL(U11(x1, x2)) = x1
POL(U12(x1)) = x1
POL(U21(x1)) = x1
POL(U31(x1, x2)) = x1
POL(U32(x1)) = x1
POL(U41(x1, x2)) = x1
POL(U51(x1, x2, x3)) = 0
POL(U52(x1, x2, x3)) = x2
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 0
POL(U72(x1, x2, x3)) = x2
POL(active(x1)) = x1
POL(isNat(x1)) = 0
POL(mark(x1)) = x1
POL(plus(x1, x2)) = 0
POL(s(x1)) = x1
POL(tt) = 0
POL(x(x1, x2)) = 0
The following usable rules [17] were oriented:
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(U12(x0), y1)) → ACTIVE(U11(active(U12(mark(x0))), y1))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U12(X)) → MARK(X)
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(U52(x0, x1, x2), y1)) → ACTIVE(U11(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U11(U51(x0, x1, x2), y1)) → ACTIVE(U11(active(U51(mark(x0), x1, x2)), y1))
MARK(U11(U21(x0), y1)) → ACTIVE(U11(active(U21(mark(x0))), y1))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(U21(x0), y1)) → ACTIVE(U31(active(U21(mark(x0))), y1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(tt, y1)) → ACTIVE(U31(active(tt), y1))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U11(U41(x0, x1), y1)) → ACTIVE(U11(active(U41(mark(x0), x1)), y1))
MARK(U31(U52(x0, x1, x2), y1)) → ACTIVE(U31(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(x(x0, x1), y1)) → ACTIVE(U11(active(x(mark(x0), mark(x1))), y1))
MARK(U31(U51(x0, x1, x2), y1)) → ACTIVE(U31(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(U72(x0, x1, x2), y1)) → ACTIVE(U31(active(U72(mark(x0), x1, x2)), y1))
MARK(U31(U31(x0, x1), y1)) → ACTIVE(U31(active(U31(mark(x0), x1)), y1))
MARK(U11(s(x0), y1)) → ACTIVE(U11(active(s(mark(x0))), y1))
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U31(x(x0, x1), y1)) → ACTIVE(U31(active(x(mark(x0), mark(x1))), y1))
MARK(U21(X)) → MARK(X)
MARK(U11(U71(x0, x1, x2), y1)) → ACTIVE(U11(active(U71(mark(x0), x1, x2)), y1))
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U31(U12(x0), y1)) → ACTIVE(U31(active(U12(mark(x0))), y1))
MARK(U31(s(x0), y1)) → ACTIVE(U31(active(s(mark(x0))), y1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(U61(x0), y1)) → ACTIVE(U11(active(U61(mark(x0))), y1))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(U71(x0, x1, x2), y1)) → ACTIVE(U31(active(U71(mark(x0), x1, x2)), y1))
MARK(U11(U72(x0, x1, x2), y1)) → ACTIVE(U11(active(U72(mark(x0), x1, x2)), y1))
MARK(U31(U32(x0), y1)) → ACTIVE(U31(active(U32(mark(x0))), y1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U11(tt, y1)) → ACTIVE(U11(active(tt), y1))
MARK(U31(U41(x0, x1), y1)) → ACTIVE(U31(active(U41(mark(x0), x1)), y1))
MARK(U31(U61(x0), y1)) → ACTIVE(U31(active(U61(mark(x0))), y1))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(U32(x0), y1)) → ACTIVE(U11(active(U32(mark(x0))), y1))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
MARK(U11(U31(x0, x1), y1)) → ACTIVE(U11(active(U31(mark(x0), x1)), y1))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U11(U52(x0, x1, x2), y1)) → ACTIVE(U11(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(U51(x0, x1, x2), y1)) → ACTIVE(U11(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(tt, y1)) → ACTIVE(U31(active(tt), y1))
MARK(U11(U41(x0, x1), y1)) → ACTIVE(U11(active(U41(mark(x0), x1)), y1))
MARK(U31(U52(x0, x1, x2), y1)) → ACTIVE(U31(active(U52(mark(x0), x1, x2)), y1))
MARK(U11(x(x0, x1), y1)) → ACTIVE(U11(active(x(mark(x0), mark(x1))), y1))
MARK(U31(U51(x0, x1, x2), y1)) → ACTIVE(U31(active(U51(mark(x0), x1, x2)), y1))
MARK(U31(U72(x0, x1, x2), y1)) → ACTIVE(U31(active(U72(mark(x0), x1, x2)), y1))
MARK(U11(s(x0), y1)) → ACTIVE(U11(active(s(mark(x0))), y1))
MARK(U31(x(x0, x1), y1)) → ACTIVE(U31(active(x(mark(x0), mark(x1))), y1))
MARK(U11(U71(x0, x1, x2), y1)) → ACTIVE(U11(active(U71(mark(x0), x1, x2)), y1))
MARK(U31(s(x0), y1)) → ACTIVE(U31(active(s(mark(x0))), y1))
MARK(U11(U61(x0), y1)) → ACTIVE(U11(active(U61(mark(x0))), y1))
MARK(U31(U71(x0, x1, x2), y1)) → ACTIVE(U31(active(U71(mark(x0), x1, x2)), y1))
MARK(U11(U72(x0, x1, x2), y1)) → ACTIVE(U11(active(U72(mark(x0), x1, x2)), y1))
MARK(U11(tt, y1)) → ACTIVE(U11(active(tt), y1))
MARK(U31(U41(x0, x1), y1)) → ACTIVE(U31(active(U41(mark(x0), x1)), y1))
MARK(U31(U61(x0), y1)) → ACTIVE(U31(active(U61(mark(x0))), y1))
The remaining pairs can at least be oriented weakly.
MARK(U11(U12(x0), y1)) → ACTIVE(U11(active(U12(mark(x0))), y1))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U12(X)) → MARK(X)
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U11(U21(x0), y1)) → ACTIVE(U11(active(U21(mark(x0))), y1))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(U21(x0), y1)) → ACTIVE(U31(active(U21(mark(x0))), y1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(U31(x0, x1), y1)) → ACTIVE(U31(active(U31(mark(x0), x1)), y1))
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U31(U12(x0), y1)) → ACTIVE(U31(active(U12(mark(x0))), y1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(U32(x0), y1)) → ACTIVE(U31(active(U32(mark(x0))), y1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(U32(x0), y1)) → ACTIVE(U11(active(U32(mark(x0))), y1))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
MARK(U11(U31(x0, x1), y1)) → ACTIVE(U11(active(U31(mark(x0), x1)), y1))
Used ordering: Polynomial interpretation [25]:
POL(0) = 0
POL(ACTIVE(x1)) = 0
POL(MARK(x1)) = x1
POL(U11(x1, x2)) = x1
POL(U12(x1)) = x1
POL(U21(x1)) = x1
POL(U31(x1, x2)) = x1
POL(U32(x1)) = x1
POL(U41(x1, x2)) = 1 + x1 + x2
POL(U51(x1, x2, x3)) = 1 + x2 + x3
POL(U52(x1, x2, x3)) = 1 + x1
POL(U61(x1)) = 1
POL(U71(x1, x2, x3)) = 1 + x3
POL(U72(x1, x2, x3)) = 1 + x3
POL(active(x1)) = x1
POL(isNat(x1)) = 0
POL(mark(x1)) = x1
POL(plus(x1, x2)) = 0
POL(s(x1)) = 1 + x1
POL(tt) = 1
POL(x(x1, x2)) = 1
The following usable rules [17] were oriented:
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(U12(x0), y1)) → ACTIVE(U11(active(U12(mark(x0))), y1))
MARK(U12(X)) → MARK(X)
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(U11(U21(x0), y1)) → ACTIVE(U11(active(U21(mark(x0))), y1))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(U21(x0), y1)) → ACTIVE(U31(active(U21(mark(x0))), y1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(U31(x0, x1), y1)) → ACTIVE(U31(active(U31(mark(x0), x1)), y1))
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U31(U12(x0), y1)) → ACTIVE(U31(active(U12(mark(x0))), y1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(U32(x0), y1)) → ACTIVE(U31(active(U32(mark(x0))), y1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(U32(x0), y1)) → ACTIVE(U11(active(U32(mark(x0))), y1))
MARK(U11(U31(x0, x1), y1)) → ACTIVE(U11(active(U31(mark(x0), x1)), y1))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U31(U21(x0), y1)) → ACTIVE(U31(active(U21(mark(x0))), y1))
The remaining pairs can at least be oriented weakly.
MARK(U11(U12(x0), y1)) → ACTIVE(U11(active(U12(mark(x0))), y1))
MARK(U12(X)) → MARK(X)
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(U11(U21(x0), y1)) → ACTIVE(U11(active(U21(mark(x0))), y1))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(U31(x0, x1), y1)) → ACTIVE(U31(active(U31(mark(x0), x1)), y1))
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U31(U12(x0), y1)) → ACTIVE(U31(active(U12(mark(x0))), y1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(U32(x0), y1)) → ACTIVE(U31(active(U32(mark(x0))), y1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(U32(x0), y1)) → ACTIVE(U11(active(U32(mark(x0))), y1))
MARK(U11(U31(x0, x1), y1)) → ACTIVE(U11(active(U31(mark(x0), x1)), y1))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
Used ordering: Matrix interpretation [3]:
Non-tuple symbols:
M( plus(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U31(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( x(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U11(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U52(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( U41(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U72(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( U51(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( U71(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
Tuple symbols:
Matrix type:
We used a basic matrix type which is not further parametrizeable.
As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order.
The following usable rules [17] were oriented:
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U61(active(X)) → U61(X)
U61(mark(X)) → U61(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
x(X1, active(X2)) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(U12(x0), y1)) → ACTIVE(U11(active(U12(mark(x0))), y1))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U12(X)) → MARK(X)
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U11(U21(x0), y1)) → ACTIVE(U11(active(U21(mark(x0))), y1))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(U31(x0, x1), y1)) → ACTIVE(U31(active(U31(mark(x0), x1)), y1))
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U31(U12(x0), y1)) → ACTIVE(U31(active(U12(mark(x0))), y1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(U32(x0), y1)) → ACTIVE(U31(active(U32(mark(x0))), y1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(U32(x0), y1)) → ACTIVE(U11(active(U32(mark(x0))), y1))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
MARK(U11(U31(x0, x1), y1)) → ACTIVE(U11(active(U31(mark(x0), x1)), y1))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U11(U12(x0), y1)) → ACTIVE(U11(active(U12(mark(x0))), y1))
MARK(U11(U21(x0), y1)) → ACTIVE(U11(active(U21(mark(x0))), y1))
MARK(U31(U31(x0, x1), y1)) → ACTIVE(U31(active(U31(mark(x0), x1)), y1))
MARK(U31(U12(x0), y1)) → ACTIVE(U31(active(U12(mark(x0))), y1))
MARK(U31(U32(x0), y1)) → ACTIVE(U31(active(U32(mark(x0))), y1))
MARK(U11(U32(x0), y1)) → ACTIVE(U11(active(U32(mark(x0))), y1))
MARK(U11(U31(x0, x1), y1)) → ACTIVE(U11(active(U31(mark(x0), x1)), y1))
The remaining pairs can at least be oriented weakly.
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U12(X)) → MARK(X)
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
Used ordering: Matrix interpretation [3]:
Non-tuple symbols:
M( plus(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U31(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( x(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U11(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U52(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( U41(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U72(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( U51(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( U71(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
Tuple symbols:
Matrix type:
We used a basic matrix type which is not further parametrizeable.
As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order.
The following usable rules [17] were oriented:
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U12(X)) → MARK(X)
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U11(U11(x0, x1), y1)) → ACTIVE(U11(active(U11(mark(x0), x1)), y1))
The remaining pairs can at least be oriented weakly.
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U12(X)) → MARK(X)
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
Used ordering: Matrix interpretation [3]:
Non-tuple symbols:
M( plus(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U31(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( x(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U11(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U52(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( U41(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U72(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( U51(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( U71(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
Tuple symbols:
Matrix type:
We used a basic matrix type which is not further parametrizeable.
As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order.
The following usable rules [17] were oriented:
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U12(X)) → MARK(X)
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(U31(U11(x0, x1), y1)) → ACTIVE(U31(active(U11(mark(x0), x1)), y1))
The remaining pairs can at least be oriented weakly.
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U12(X)) → MARK(X)
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
Used ordering: Matrix interpretation [3]:
Non-tuple symbols:
M( plus(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U31(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( x(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U11(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U52(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( U41(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( U72(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( U51(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
M( U71(x1, ..., x3) ) = | | + | | · | x1 | + | | · | x2 | + | | · | x3 |
Tuple symbols:
Matrix type:
We used a basic matrix type which is not further parametrizeable.
As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order.
The following usable rules [17] were oriented:
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U31(x0, x1)) → ACTIVE(U31(x0, x1))
MARK(U12(X)) → MARK(X)
MARK(U11(isNat(x0), y1)) → ACTIVE(U11(active(isNat(x0)), y1))
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U31(X1, X2)) → MARK(X1)
MARK(U31(isNat(x0), y1)) → ACTIVE(U31(active(isNat(x0)), y1))
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(y0, active(x1))) → ACTIVE(U11(mark(y0), x1))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U11(y0, mark(x1))) → ACTIVE(U11(mark(y0), x1))
MARK(U31(y0, active(x1))) → ACTIVE(U31(mark(y0), x1))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U31(y0, mark(x1))) → ACTIVE(U31(mark(y0), x1))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U11(x0, x1)) → ACTIVE(U11(x0, x1))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
MARK(s(X)) → ACTIVE(s(mark(X)))
MARK(U32(X)) → ACTIVE(U32(mark(X)))
MARK(U61(X)) → ACTIVE(U61(mark(X)))
MARK(U12(X)) → ACTIVE(U12(mark(X)))
The remaining pairs can at least be oriented weakly.
MARK(U12(X)) → MARK(X)
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U21(X)) → ACTIVE(U21(mark(X)))
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U11(X1, X2)) → MARK(X1)
MARK(s(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(plus(X1, X2)) → MARK(X2)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
MARK(x(X1, X2)) → MARK(X1)
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → MARK(X1)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(plus(X1, X2)) → MARK(X1)
ACTIVE(U41(tt, N)) → MARK(N)
MARK(U21(X)) → MARK(X)
MARK(U32(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U61(X)) → MARK(X)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(x(X1, X2)) → MARK(X2)
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U41(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
Used ordering: Polynomial interpretation [25]:
POL(0) = 0
POL(ACTIVE(x1)) = x1
POL(MARK(x1)) = 1
POL(U11(x1, x2)) = 1
POL(U12(x1)) = 0
POL(U21(x1)) = 1
POL(U31(x1, x2)) = 1
POL(U32(x1)) = 0
POL(U41(x1, x2)) = 1
POL(U51(x1, x2, x3)) = 1
POL(U52(x1, x2, x3)) = 1
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 1
POL(U72(x1, x2, x3)) = 1
POL(active(x1)) = 0
POL(isNat(x1)) = 1
POL(mark(x1)) = 0
POL(plus(x1, x2)) = 1
POL(s(x1)) = 0
POL(tt) = 0
POL(x(x1, x2)) = 1
The following usable rules [17] were oriented:
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U61(active(X)) → U61(X)
U61(mark(X)) → U61(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
x(X1, active(X2)) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDPOrderProof
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U12(X)) → MARK(X)
MARK(U21(X)) → ACTIVE(U21(mark(X)))
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(s(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(plus(X1, X2)) → MARK(X2)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
MARK(x(X1, X2)) → MARK(X1)
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → MARK(X1)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(plus(X1, X2)) → MARK(X1)
ACTIVE(U41(tt, N)) → MARK(N)
MARK(U32(X)) → MARK(X)
MARK(U21(X)) → MARK(X)
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
MARK(U61(X)) → MARK(X)
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
MARK(x(X1, X2)) → MARK(X2)
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U41(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.